home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch2f < prev    next >
Encoding:
Internet Message Format  |  1989-08-19  |  59.2 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i011:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch2f
  5. Message-ID: <4463@tekred.CNA.TEK.COM>
  6. Date: 18 Aug 89 15:50:59 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1841
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 11
  13. Archive-name: NetHack3/Patch2f
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.  
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of archive 6 (of 7)."
  25. # Contents:  patch02f
  26. # Wrapped by billr@saab on Fri Aug 18 08:44:39 1989
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'patch02f' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'patch02f'\"
  30. else
  31. echo shar: Extracting \"'patch02f'\" \(57076 characters\)
  32. sed "s/^X//" >'patch02f' <<'END_OF_FILE'
  33. X*** src/Old/monst.c    Wed Aug 16 12:31:28 1989
  34. X--- src/monst.c    Thu Aug 10 20:43:03 1989
  35. X***************
  36. X*** 606,655 ****
  37. X      { "grey dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
  38. X        { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  39. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  40. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  41. X!       M1_GREEDY | M1_JEWELS | M1_MAGIC,
  42. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  43. X      { "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
  44. X        { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  45. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  46. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  47. X!       M1_FIRE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  48. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  49. X      { "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
  50. X        { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
  51. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  52. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  53. X!       M1_SLEE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  54. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  55. X      { "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
  56. X        { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  57. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  58. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  59. X!       M1_COLD_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  60. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  61. X      { "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
  62. X        { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
  63. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  64. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  65. X!       M1_GREEDY | M1_JEWELS | M1_MAGIC,
  66. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  67. X      { "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
  68. X        { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  69. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  70. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  71. X!       M1_ELEC_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  72. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  73. X      { "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
  74. X        { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  75. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  76. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  77. X!       M1_POIS | M1_POIS_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  78. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  79. X      { "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
  80. X        { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  81. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  82. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
  83. X!       M1_POIS | M1_STON_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  84. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  85. X  /*    Elementals    */
  86. X      { "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
  87. X--- 606,655 ----
  88. X      { "grey dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
  89. X        { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  90. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  91. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  92. X!       M1_EGGS | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  93. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  94. X      { "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
  95. X        { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  96. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  97. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  98. X!       M1_EGGS | M1_FIRE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  99. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  100. X      { "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
  101. X        { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
  102. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  103. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  104. X!       M1_EGGS | M1_SLEE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  105. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  106. X      { "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
  107. X        { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  108. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  109. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  110. X!       M1_EGGS | M1_COLD_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  111. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  112. X      { "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
  113. X        { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
  114. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  115. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  116. X!       M1_EGGS | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  117. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  118. X      { "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
  119. X        { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  120. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  121. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  122. X!       M1_EGGS | M1_ELEC_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  123. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  124. X      { "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
  125. X        { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  126. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  127. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  128. X!       M1_EGGS | M1_POIS | M1_POIS_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  129. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  130. X      { "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
  131. X        { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  132. X          { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  133. X!       150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
  134. X!       M1_EGGS | M1_POIS | M1_STON_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  135. X        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
  136. X  /*    Elementals    */
  137. X      { "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
  138. X***************
  139. X*** 1006,1012 ****
  140. X        { { AT_WEAP, AD_DRLI, 1, 4 }, { AT_BREA, AD_SLEE, 0, 0 },
  141. X          NO_ATTK, NO_ATTK, NO_ATTK }, 30, 0, 0, MS_SILENT,
  142. X        M1_HUMANOID | M1_UNDEAD | M1_POIS_RES | M1_STALK | M1_COLLECT, 
  143. X!       M2_STRONG },
  144. X  #endif
  145. X  /*    Xorn    */
  146. X      { "xorn", S_XORN, 8, 9,-2, 20, 0, (G_GENO | 1),
  147. X--- 1006,1012 ----
  148. X        { { AT_WEAP, AD_DRLI, 1, 4 }, { AT_BREA, AD_SLEE, 0, 0 },
  149. X          NO_ATTK, NO_ATTK, NO_ATTK }, 30, 0, 0, MS_SILENT,
  150. X        M1_HUMANOID | M1_UNDEAD | M1_POIS_RES | M1_STALK | M1_COLLECT, 
  151. X!       M2_STRONG | M2_HOSTILE },
  152. X  #endif
  153. X  /*    Xorn    */
  154. X      { "xorn", S_XORN, 8, 9,-2, 20, 0, (G_GENO | 1),
  155. X***************
  156. X*** 1215,1222 ****
  157. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  158. X        { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_TUCH, AD_PLYS, 1, 8 },
  159. X          NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, PL_NSIZ, MS_FERRY,
  160. X!       M1_NOPOLY | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES | M1_COLLECT,
  161. X!       M2_HUMAN | M2_PEACEFUL },
  162. X  #endif
  163. X  /*    Ghost        */
  164. X      { "ghost", S_GHOST, 10, 3, -5, 50, -5, (G_NOCORPSE | G_NOGEN),
  165. X--- 1215,1222 ----
  166. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  167. X        { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_TUCH, AD_PLYS, 1, 8 },
  168. X          NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, PL_NSIZ, MS_FERRY,
  169. X!       M1_NOPOLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES |
  170. X!       M1_COLLECT, M2_HUMAN | M2_PEACEFUL },
  171. X  #endif
  172. X  /*    Ghost        */
  173. X      { "ghost", S_GHOST, 10, 3, -5, 50, -5, (G_NOCORPSE | G_NOGEN),
  174. X***************
  175. X*** 1275,1282 ****
  176. X        { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  177. X          { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  178. X          { AT_WEAP, AD_PHYS, 2, 4 }, }, 45, 450, 0, MS_SILENT, M1_HUMANOID |
  179. X!       M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_FEM,
  180. X!       M2_DEMON | M2_HOSTILE | M2_NASTY },
  181. X      { "barbed devil", S_DEMON, 8, 12, 0, 35, 8,
  182. X        (G_HELL | G_NOCORPSE | G_SGROUP | 2),
  183. X        { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
  184. X--- 1275,1282 ----
  185. X        { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  186. X          { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  187. X          { AT_WEAP, AD_PHYS, 2, 4 }, }, 45, 450, 0, MS_SILENT, M1_HUMANOID |
  188. X!       M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT |
  189. X!       M1_FEM, M2_DEMON | M2_HOSTILE | M2_NASTY },
  190. X      { "barbed devil", S_DEMON, 8, 12, 0, 35, 8,
  191. X        (G_HELL | G_NOCORPSE | G_SGROUP | 2),
  192. X        { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
  193. X***************
  194. X*** 1310,1340 ****
  195. X      { "ice devil", S_DEMON, 11, 6, -4, 55, -12, (G_HELL | G_NOCORPSE | 2),
  196. X        { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  197. X          { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_COLD, 3, 4 }, NO_ATTK },
  198. X!       45, 450, 0, MS_SILENT, M1_POIS | M1_FIRE_RES | M1_COLD_RES | M1_STALK,
  199. X!       M2_DEMON | M2_HOSTILE | M2_NASTY },
  200. X      { "pit fiend", S_DEMON, 13, 6, -3, 65, -13, (G_HELL | G_NOCORPSE | 2),
  201. X        { { AT_WEAP, AD_PHYS, 4, 2 }, { AT_WEAP, AD_PHYS, 4, 2 },
  202. X          { AT_HUGS, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK }, 45, 450, 0,
  203. X!       MS_GROWL, M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT,
  204. X!       M2_DEMON | M2_HOSTILE | M2_NASTY },
  205. X      { "balrog", S_DEMON, 16, 5, -2, 75, -14, (G_HELL | G_NOCORPSE | 1),
  206. X        { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
  207. X!         NO_ATTK, NO_ATTK, NO_ATTK },
  208. X!       45, 450, 0, MS_SILENT, M1_FLY | M1_BIG | M1_COLLECT | M1_STALK |
  209. X!       M1_POIS | M1_FIRE_RES, M2_DEMON | M2_HOSTILE | M2_STRONG | M2_NASTY },
  210. X      /* Named demon lords & princes plus Arch-Devils */
  211. X      { "Juiblex", S_DEMON, 50, 3, -7, 65, -15,
  212. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  213. X        { { AT_ENGL, AD_DISE, 4, 10 }, { AT_SPIT, AD_ACID, 3, 6 },
  214. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_GURGLE,
  215. X!       M1_NOPOLY | M1_FLY | M1_NOHANDS | M1_POIS | M1_FIRE_RES | M1_STALK |
  216. X!       M1_LORD, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_AMORPHOUS },
  217. X      { "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
  218. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  219. X        { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
  220. X          { AT_WEAP, AD_PLYS, 1, 6 }, { AT_MAGC, AD_MAGM, 2, 6 }, NO_ATTK },
  221. X!       50, 500, PL_NSIZ, MS_ORC, M1_NOPOLY | M1_FLY | M1_POIS |
  222. X!       M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_LORD,
  223. X        M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  224. X      { "Orcus", S_DEMON, 66, 9, -6, 85, -20,
  225. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  226. X--- 1310,1341 ----
  227. X      { "ice devil", S_DEMON, 11, 6, -4, 55, -12, (G_HELL | G_NOCORPSE | 2),
  228. X        { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  229. X          { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_COLD, 3, 4 }, NO_ATTK },
  230. X!       45, 450, 0, MS_SILENT, M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
  231. X!       M1_COLD_RES | M1_STALK, M2_DEMON | M2_HOSTILE | M2_NASTY },
  232. X      { "pit fiend", S_DEMON, 13, 6, -3, 65, -13, (G_HELL | G_NOCORPSE | 2),
  233. X        { { AT_WEAP, AD_PHYS, 4, 2 }, { AT_WEAP, AD_PHYS, 4, 2 },
  234. X          { AT_HUGS, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK }, 45, 450, 0,
  235. X!       MS_GROWL, M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_STALK |
  236. X!       M1_COLLECT, M2_DEMON | M2_HOSTILE | M2_NASTY },
  237. X      { "balrog", S_DEMON, 16, 5, -2, 75, -14, (G_HELL | G_NOCORPSE | 1),
  238. X        { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
  239. X!         NO_ATTK, NO_ATTK, NO_ATTK }, 45, 450, 0, MS_SILENT,
  240. X!       M1_FLY | M1_BIG | M1_SEE_INVIS | M1_COLLECT | M1_STALK | M1_POIS |
  241. X!       M1_FIRE_RES, M2_DEMON | M2_HOSTILE | M2_STRONG | M2_NASTY },
  242. X      /* Named demon lords & princes plus Arch-Devils */
  243. X      { "Juiblex", S_DEMON, 50, 3, -7, 65, -15,
  244. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  245. X        { { AT_ENGL, AD_DISE, 4, 10 }, { AT_SPIT, AD_ACID, 3, 6 },
  246. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_GURGLE,
  247. X!       M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS |
  248. X!       M1_FIRE_RES | M1_STALK | M1_LORD,
  249. X!       M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_AMORPHOUS },
  250. X      { "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
  251. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  252. X        { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
  253. X          { AT_WEAP, AD_PLYS, 1, 6 }, { AT_MAGC, AD_MAGM, 2, 6 }, NO_ATTK },
  254. X!       50, 500, PL_NSIZ, MS_ORC, M1_NOPOLY | M1_FLY | M1_SEE_INVIS |
  255. X!       M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_LORD,
  256. X        M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  257. X      { "Orcus", S_DEMON, 66, 9, -6, 85, -20,
  258. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  259. X***************
  260. X*** 1341,1372 ****
  261. X        { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_WEAP, AD_PHYS, 3, 6 },
  262. X          { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
  263. X          { AT_STNG, AD_DRST, 2, 4 }, }, 50, 500, PL_NSIZ, MS_ORC,
  264. X!       M1_NOPOLY | M1_FLY | M1_POIS | M1_FIRE_RES | M1_STALK |
  265. X!       M1_COLLECT | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  266. X      { "Geryon", S_DEMON, 72, 3, -3, 75, 15,
  267. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  268. X        { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
  269. X          { AT_STNG, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ,
  270. X!       MS_JEER, M1_NOPOLY | M1_FLY | M1_POIS | M1_FIRE_RES |
  271. X        M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  272. X      { "Dispater", S_DEMON, 78, 15, -2, 80, 15,
  273. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  274. X        { { AT_WEAP, AD_PHYS, 4, 6 }, { AT_MAGC, AD_SPEL, 6, 6 },
  275. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
  276. X!       M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS |
  277. X        M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_PRINCE,
  278. X        M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  279. X!     { "Baalzebul", S_DEMON, 89, 9, -5, 85, 20,
  280. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  281. X        { { AT_BITE, AD_DRST, 2, 6 }, { AT_GAZE, AD_STUN, 2, 6 },
  282. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
  283. X!       M1_NOPOLY | M1_FLY | M1_POIS | M1_FIRE_RES | M1_STALK |
  284. X!       M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  285. X      { "Asmodeus", S_DEMON, 105, 12, -7, 90, 20,
  286. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  287. X        { { AT_CLAW, AD_PHYS, 4, 4 }, { AT_MAGC, AD_COLD, 6, 6 },
  288. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
  289. X!       M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS |
  290. X        M1_FIRE_RES | M1_COLD_RES | M1_STALK | M1_PRINCE,
  291. X        M2_DEMON | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY },
  292. X      { "Demogorgon", S_DEMON, 106, 15, -8, 95, -20,
  293. X--- 1342,1374 ----
  294. X        { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_WEAP, AD_PHYS, 3, 6 },
  295. X          { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
  296. X          { AT_STNG, AD_DRST, 2, 4 }, }, 50, 500, PL_NSIZ, MS_ORC,
  297. X!       M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
  298. X!       M1_STALK | M1_COLLECT | M1_PRINCE,
  299. X!       M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  300. X      { "Geryon", S_DEMON, 72, 3, -3, 75, 15,
  301. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  302. X        { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
  303. X          { AT_STNG, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ,
  304. X!       MS_JEER, M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
  305. X        M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  306. X      { "Dispater", S_DEMON, 78, 15, -2, 80, 15,
  307. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  308. X        { { AT_WEAP, AD_PHYS, 4, 6 }, { AT_MAGC, AD_SPEL, 6, 6 },
  309. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
  310. X!       M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
  311. X        M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_PRINCE,
  312. X        M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  313. X!     { "Baalzebub", S_DEMON, 89, 9, -5, 85, 20,
  314. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  315. X        { { AT_BITE, AD_DRST, 2, 6 }, { AT_GAZE, AD_STUN, 2, 6 },
  316. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
  317. X!       M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
  318. X!       M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  319. X      { "Asmodeus", S_DEMON, 105, 12, -7, 90, 20,
  320. X        (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
  321. X        { { AT_CLAW, AD_PHYS, 4, 4 }, { AT_MAGC, AD_COLD, 6, 6 },
  322. X          NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
  323. X!       M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
  324. X        M1_FIRE_RES | M1_COLD_RES | M1_STALK | M1_PRINCE,
  325. X        M2_DEMON | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY },
  326. X      { "Demogorgon", S_DEMON, 106, 15, -8, 95, -20,
  327. X***************
  328. X*** 1374,1387 ****
  329. X        { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_STNG, AD_DRLI, 1, 4 },
  330. X          { AT_CLAW, AD_DISE, 1, 6 }, { AT_CLAW, AD_DISE, 1, 6 },
  331. X          NO_ATTK }, 50, 500, PL_NSIZ, MS_GROWL, M1_NOPOLY | M1_FLY |
  332. X!       M1_NOHANDS | M1_POIS | M1_FIRE_RES | M1_STALK |
  333. X        M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  334. X  #endif
  335. X  #ifdef MAIL
  336. X      { "mail daemon", S_DEMON, 56, 24, 10, 127, 0, (G_NOGEN | G_NOCORPSE),
  337. X        { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0,
  338. X!       MS_SILENT, M1_NOPOLY | M1_FLY | M1_SWIM | M1_HUMANOID | M1_POIS |
  339. X!       M1_FIRE_RES | M1_COLD_RES | M1_SLEE_RES | M1_STALK, M2_PEACEFUL },
  340. X  /* Neither rain nor sleet nor gloom of night shall stay this courier... */
  341. X  #endif
  342. X      { "djinni", S_DEMON, 7, 12, 4, 30, 0, (G_NOGEN | G_NOCORPSE),
  343. X--- 1376,1390 ----
  344. X        { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_STNG, AD_DRLI, 1, 4 },
  345. X          { AT_CLAW, AD_DISE, 1, 6 }, { AT_CLAW, AD_DISE, 1, 6 },
  346. X          NO_ATTK }, 50, 500, PL_NSIZ, MS_GROWL, M1_NOPOLY | M1_FLY |
  347. X!       M1_SEE_INVIS | M1_NOHANDS | M1_POIS | M1_FIRE_RES | M1_STALK |
  348. X        M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
  349. X  #endif
  350. X  #ifdef MAIL
  351. X      { "mail daemon", S_DEMON, 56, 24, 10, 127, 0, (G_NOGEN | G_NOCORPSE),
  352. X        { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0,
  353. X!       MS_SILENT, M1_NOPOLY | M1_FLY | M1_SWIM | M1_SEE_INVIS |
  354. X!       M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLD_RES | M1_SLEE_RES |
  355. X!       M1_STALK, M2_PEACEFUL },
  356. X  /* Neither rain nor sleet nor gloom of night shall stay this courier... */
  357. X  #endif
  358. X      { "djinni", S_DEMON, 7, 12, 4, 30, 0, (G_NOGEN | G_NOCORPSE),
  359. X*** src/Old/music.c    Wed Aug 16 12:32:59 1989
  360. X--- src/music.c    Thu Aug 10 10:25:43 1989
  361. X***************
  362. X*** 135,147 ****
  363. X  charm_monsters(distance)
  364. X  int distance;
  365. X  {
  366. X!     register struct monst *mtmp = fmon;
  367. X  
  368. X      while(mtmp) {
  369. X          if(dist(mtmp->mx, mtmp->my) <= distance)
  370. X              if(!resist(mtmp, SCROLL_SYM, 0, NOTELL))
  371. X              (void) tamedog(mtmp, (struct obj *) 0);
  372. X!         mtmp = mtmp->nmon;
  373. X      }
  374. X  
  375. X  }
  376. X--- 135,148 ----
  377. X  charm_monsters(distance)
  378. X  int distance;
  379. X  {
  380. X!     register struct monst *mtmp = fmon, *mtmp2;
  381. X  
  382. X      while(mtmp) {
  383. X+         mtmp2 = mtmp->nmon;
  384. X          if(dist(mtmp->mx, mtmp->my) <= distance)
  385. X              if(!resist(mtmp, SCROLL_SYM, 0, NOTELL))
  386. X              (void) tamedog(mtmp, (struct obj *) 0);
  387. X!         mtmp = mtmp2;
  388. X      }
  389. X  
  390. X  }
  391. X*** src/Old/objects.c    Wed Aug 16 12:33:34 1989
  392. X--- src/objects.c    Mon Aug  7 20:34:06 1989
  393. X***************
  394. X*** 58,70 ****
  395. X      FOOD("pear",             7, 0, 1, 0,  50),
  396. X      FOOD("melon",             7, 0, 1, 0, 100),
  397. X      FOOD("banana",             7, 0, 1, 0,  80),
  398. X  #ifdef TUTTI_FRUTTI
  399. X      FOOD("slime mold",        75, 0, 1, 0, 250),
  400. X  #else
  401. X      FOOD("slice of pizza",        75, 0, 1, 0, 250),
  402. X  #endif
  403. X-     FOOD("carrot",            15, 0, 1, 0,  50),
  404. X-     FOOD("clove of garlic",      5, 0, 1, 0,  40),
  405. X      /* human food */
  406. X      FOOD("lump of royal jelly",  0, 0, 1, 0, 200),
  407. X      FOOD("cream pie",        25, 0, 1, 0, 100),
  408. X--- 58,70 ----
  409. X      FOOD("pear",             7, 0, 1, 0,  50),
  410. X      FOOD("melon",             7, 0, 1, 0, 100),
  411. X      FOOD("banana",             7, 0, 1, 0,  80),
  412. X+     FOOD("carrot",            15, 0, 1, 0,  50),
  413. X+     FOOD("clove of garlic",      5, 0, 1, 0,  40),
  414. X  #ifdef TUTTI_FRUTTI
  415. X      FOOD("slime mold",        75, 0, 1, 0, 250),
  416. X  #else
  417. X      FOOD("slice of pizza",        75, 0, 1, 0, 250),
  418. X  #endif
  419. X      /* human food */
  420. X      FOOD("lump of royal jelly",  0, 0, 1, 0, 200),
  421. X      FOOD("cream pie",        25, 0, 1, 0, 100),
  422. X*** src/Old/objnam.c    Wed Aug 16 12:34:11 1989
  423. X--- src/objnam.c    Tue Aug 15 20:05:30 1989
  424. X***************
  425. X*** 633,639 ****
  426. X      Strcpy(str, oldstr);
  427. X  
  428. X      /* Search for common compounds, i.e. lump of royal jelly */
  429. X!     for(excess=0, spot=str; *spot; spot++) {
  430. X          if (!strncmp(spot, " of ", 4)
  431. X                  || !strncmp(spot, " labeled ", 9)
  432. X                  || !strncmp(spot, " called ", 8)
  433. X--- 633,639 ----
  434. X      Strcpy(str, oldstr);
  435. X  
  436. X      /* Search for common compounds, i.e. lump of royal jelly */
  437. X!     for(excess=(char *)0, spot=str; *spot; spot++) {
  438. X          if (!strncmp(spot, " of ", 4)
  439. X                  || !strncmp(spot, " labeled ", 9)
  440. X                  || !strncmp(spot, " called ", 8)
  441. X***************
  442. X*** 651,657 ****
  443. X                  || !strncmp(spot, " du ", 4)
  444. X  #endif
  445. X                  ) {
  446. X!             excess = oldstr + (spot - str);
  447. X              *spot = 0;
  448. X              break;
  449. X          }
  450. X--- 651,657 ----
  451. X                  || !strncmp(spot, " du ", 4)
  452. X  #endif
  453. X                  ) {
  454. X!             excess = oldstr + (int) (spot - str);
  455. X              *spot = 0;
  456. X              break;
  457. X          }
  458. X***************
  459. X*** 1102,1108 ****
  460. X          goto typfnd;
  461. X      }
  462. X  #endif
  463. X!     if (strlen(bp) == 1 && index(obj_symbols, *bp)) {
  464. X          let = *bp;
  465. X          goto any;
  466. X      }
  467. X--- 1102,1108 ----
  468. X          goto typfnd;
  469. X      }
  470. X  #endif
  471. X!     if (strlen(bp) == 1 && index(obj_symbols, *bp) && *bp != ILLOBJ_SYM) {
  472. X          let = *bp;
  473. X          goto any;
  474. X      }
  475. X***************
  476. X*** 1374,1379 ****
  477. X--- 1374,1383 ----
  478. X      } else if (spesgn < 0) {
  479. X          curse(otmp);
  480. X      }
  481. X+ 
  482. X+     /* prevent wishing abuse */
  483. X+     if (otmp->otyp == WAN_WISHING || otmp->otyp == MAGIC_LAMP)
  484. X+         otmp->recharged = 1;
  485. X  
  486. X      /* set poisoned */
  487. X      if (ispoisoned) {
  488. X*** src/Old/options.c    Wed Aug 16 12:34:52 1989
  489. X--- src/options.c    Fri Aug  4 12:13:24 1989
  490. X***************
  491. X*** 674,681 ****
  492. X              (!strncmp(buf, "tin of ", 7) && name_to_mon(buf+7) > -1) ||
  493. X              !strcmp(buf, "empty tin") ||
  494. X              !strcmp(buf, "tin of spinach") ||
  495. X!             ((!strncmp(eos(buf)-6," corpse",6) ||
  496. X!                         !strncmp(eos(buf)-3, " egg",3))
  497. X              && name_to_mon(buf) > -1))
  498. X              {
  499. X                  Strcpy(buf, pl_fruit);
  500. X--- 674,681 ----
  501. X              (!strncmp(buf, "tin of ", 7) && name_to_mon(buf+7) > -1) ||
  502. X              !strcmp(buf, "empty tin") ||
  503. X              !strcmp(buf, "tin of spinach") ||
  504. X!             ((!strncmp(eos(buf)-6," corpse",7) ||
  505. X!                         !strncmp(eos(buf)-3, " egg",4))
  506. X              && name_to_mon(buf) > -1))
  507. X              {
  508. X                  Strcpy(buf, pl_fruit);
  509. X*** src/Old/pager.c    Wed Aug 16 12:35:16 1989
  510. X--- src/pager.c    Wed Aug 16 10:48:06 1989
  511. X***************
  512. X*** 21,26 ****
  513. X--- 21,29 ----
  514. X  
  515. X  static void page_more();
  516. X  
  517. X+ const char nonlets[] = { S_EEL, S_CHAMELEON, S_DEMON, S_GHOST, S_HUMAN,
  518. X+     S_GOLEM, 0 };
  519. X+ 
  520. X  int
  521. X  dowhatis()
  522. X  {
  523. X***************
  524. X*** 28,90 ****
  525. X      char bufr[BUFSZ+6];
  526. X      register char *buf = &bufr[6], *ep, q;
  527. X      register struct monst *mtmp;
  528. X  
  529. X      if(!(fp = fopen(DATAFILE, "r")))
  530. X          pline("Cannot open data file!");
  531. X      else {
  532. X          coord    cc;
  533. X          uchar    r;
  534. X  
  535. X          pline ("Specify unknown object by cursor? ");
  536. X          q = ynq();
  537. X-         cc.x = cc.y = -1;
  538. X          if (q == 'q') {
  539. X              (void) fclose(fp);
  540. X              return 0;
  541. X          } else if (q == 'n') {
  542. X              pline("Specify what? ");
  543. X              r = readchar();
  544. X          } else {
  545. X              if(flags.verbose)
  546. X!             pline("Please move the cursor to the unknown object.");
  547. X!             getpos(&cc, TRUE, "the unknown object");
  548. X              r = levl[cc.x][cc.y].scrsym;
  549. X          }
  550. X  
  551. X!         if (r == showsyms.stone) q = defsyms.stone;
  552. X!         else if (r == showsyms.vwall) q = defsyms.vwall;
  553. X!         else if (r == showsyms.hwall) q = defsyms.hwall;
  554. X!         else if (r == showsyms.tlcorn) q = defsyms.tlcorn;
  555. X!         else if (r == showsyms.trcorn) q = defsyms.trcorn;
  556. X!         else if (r == showsyms.blcorn) q = defsyms.blcorn;
  557. X!         else if (r == showsyms.brcorn) q = defsyms.brcorn;
  558. X!         else if (r == showsyms.crwall) q = defsyms.crwall;
  559. X!         else if (r == showsyms.tuwall) q = defsyms.tuwall;
  560. X!         else if (r == showsyms.tdwall) q = defsyms.tdwall;
  561. X!         else if (r == showsyms.tlwall) q = defsyms.tlwall;
  562. X!         else if (r == showsyms.trwall) q = defsyms.trwall;
  563. X!         else if (r == showsyms.door) q = defsyms.door;
  564. X!         else if (r == showsyms.room) q = defsyms.room;
  565. X!         else if (r == showsyms.corr) q = defsyms.corr;
  566. X!         else if (r == showsyms.upstair) q = defsyms.upstair;
  567. X!         else if (r == showsyms.dnstair) q = defsyms.dnstair;
  568. X!         else if (r == showsyms.trap) q = defsyms.trap;
  569. X  #ifdef FOUNTAINS
  570. X!         else if (r == showsyms.pool) q = defsyms.pool;
  571. X!         else if (r == showsyms.fountain) q = defsyms.fountain;
  572. X  #endif
  573. X- #ifdef THRONES
  574. X-         else if (r == showsyms.throne) q = defsyms.throne;
  575. X- #endif
  576. X-         else if (r == showsyms.web) q = defsyms.web;
  577. X  #ifdef SINKS
  578. X!         else if (r == showsyms.sink) q = defsyms.sink;
  579. X  #endif
  580. X  #ifdef ALTARS
  581. X!         else if (r == showsyms.altar) q = defsyms.altar;
  582. X  #endif
  583. X!         else
  584. X!             q = r;
  585. X          if (index(quitchars, q)) {
  586. X              (void) fclose(fp); /* sweet@scubed */
  587. X              return 0;
  588. X--- 31,118 ----
  589. X      char bufr[BUFSZ+6];
  590. X      register char *buf = &bufr[6], *ep, q;
  591. X      register struct monst *mtmp;
  592. X+ #ifdef OS2_CODEVIEW
  593. X+     char tmp[PATHLEN];
  594. X  
  595. X+     Strcpy(tmp,hackdir);
  596. X+     append_slash(tmp);
  597. X+     Strcat(tmp,DATAFILE);
  598. X+     if(!(fp = fopen(tmp,"r")))
  599. X+ #else
  600. X      if(!(fp = fopen(DATAFILE, "r")))
  601. X+ #endif
  602. X          pline("Cannot open data file!");
  603. X      else {
  604. X          coord    cc;
  605. X          uchar    r;
  606. X+         boolean bycurs = FALSE;
  607. X  
  608. X          pline ("Specify unknown object by cursor? ");
  609. X          q = ynq();
  610. X          if (q == 'q') {
  611. X              (void) fclose(fp);
  612. X              return 0;
  613. X          } else if (q == 'n') {
  614. X+             cc.x = cc.y = -1;
  615. X              pline("Specify what? ");
  616. X              r = readchar();
  617. X          } else {
  618. X+             bycurs = TRUE;
  619. X+             cc.x = u.ux;
  620. X+             cc.y = u.uy;
  621. X+     selobj:
  622. X              if(flags.verbose)
  623. X!             pline("Please move the cursor to an unknown object.");
  624. X!             getpos(&cc, FALSE, "an unknown object");
  625. X!             if (cc.x < 0) {
  626. X!                 (void) fclose(fp); /* sweet@scubed */
  627. X!                 return 0;
  628. X!             }
  629. X              r = levl[cc.x][cc.y].scrsym;
  630. X          }
  631. X  
  632. X! #define conv_sym(x)    if(r == showsyms.x) q = defsyms.x
  633. X!         conv_sym(stone);
  634. X!         else conv_sym(vwall);
  635. X!         else conv_sym(hwall);
  636. X!         else conv_sym(tlcorn);
  637. X!         else conv_sym(trcorn);
  638. X!         else conv_sym(blcorn);
  639. X!         else conv_sym(brcorn);
  640. X!         else conv_sym(crwall);
  641. X!         else conv_sym(tuwall);
  642. X!         else conv_sym(tdwall);
  643. X!         else conv_sym(tlwall);
  644. X!         else conv_sym(trwall);
  645. X!         else conv_sym(door);
  646. X!         else conv_sym(room);
  647. X!         else conv_sym(corr);
  648. X!         else conv_sym(upstair);
  649. X!         else conv_sym(dnstair);
  650. X!         else conv_sym(trap);
  651. X!         else conv_sym(web); 
  652. X!         else conv_sym(pool);
  653. X  #ifdef FOUNTAINS
  654. X!         else conv_sym(fountain);
  655. X  #endif
  656. X  #ifdef SINKS
  657. X!         else conv_sym(sink);
  658. X! #endif
  659. X! #ifdef THRONES
  660. X!         else conv_sym(throne);
  661. X  #endif
  662. X  #ifdef ALTARS
  663. X!         else conv_sym(altar);
  664. X! #endif
  665. X! #ifdef STRONGHOLD
  666. X!         else conv_sym(upladder);
  667. X!         else conv_sym(dnladder);
  668. X!         else conv_sym(dbvwall);
  669. X!         else conv_sym(dbhwall);
  670. X  #endif
  671. X!         else q = r;
  672. X! #undef conv_sym
  673. X! 
  674. X          if (index(quitchars, q)) {
  675. X              (void) fclose(fp); /* sweet@scubed */
  676. X              return 0;
  677. X***************
  678. X*** 91,96 ****
  679. X--- 119,130 ----
  680. X          }
  681. X          if(q == '%') {
  682. X              pline("%%       a piece of food");
  683. X+             if(bycurs) {
  684. X+                 buf = &bufr[6];
  685. X+                 more();
  686. X+                 rewind(fp);
  687. X+                 goto selobj;
  688. X+             }
  689. X              (void) fclose(fp);
  690. X              return 0;
  691. X          }
  692. X***************
  693. X*** 108,125 ****
  694. X                  (void) strncpy(buf+1, "       ", 7);
  695. X              }
  696. X              pline(buf);
  697. X!             if(cc.x != -1 && IS_ALTAR(levl[cc.x][cc.y].typ)) {
  698. X!                 int type = levl[u.ux][u.uy].altarmask & ~A_SHRINE;
  699. X!                 pline("(%s)", (type==0) ? "chaotic" :
  700. X!                 (type==1) ? "neutral" : "lawful");
  701. X              }
  702. X!             if (!Invisible && u.ux==cc.x && u.uy==cc.y) {
  703. X                  pline("(%s named %s)",
  704. X  #ifdef POLYSELF
  705. X                  u.mtimedone ? mons[u.umonnum].mname :
  706. X  #endif
  707. X                  pl_character, plname);
  708. X!             } else if((q >= 'A' && q <= 'z') || index(";:& @`",q)) {
  709. X                  for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
  710. X                  if(mtmp->mx == cc.x && mtmp->my == cc.y) {
  711. X                      pline("(%s%s)",
  712. X--- 142,209 ----
  713. X                  (void) strncpy(buf+1, "       ", 7);
  714. X              }
  715. X              pline(buf);
  716. X!             if(cc.x != -1) {
  717. X! #ifdef ALTARS
  718. X!                 if (r == showsyms.altar && q == defsyms.altar &&
  719. X!                 (IS_ALTAR(levl[cc.x][cc.y].typ) ||
  720. X!                  (levl[cc.x][cc.y].mmask &&
  721. X!                     m_at(cc.x,cc.y)->mimic))
  722. X!                    ) {
  723. X!                     int type = levl[cc.x][cc.y].altarmask &
  724. X!                         ~A_SHRINE;
  725. X!                     pline((type == A_CHAOS) ? "(chaotic)" :
  726. X!                       (type == A_NEUTRAL) ? "(neutral)" :
  727. X!                       "(lawful)");
  728. X!                 } else
  729. X!                 if (q == CHAIN_SYM && levl[cc.x][cc.y].omask)
  730. X!                     pline("(chain)");
  731. X!                 else
  732. X! #endif
  733. X!                 if (r == showsyms.door && q == defsyms.door &&
  734. X!                 (IS_DOOR(levl[cc.x][cc.y].typ) ||
  735. X!                                  (levl[cc.x][cc.y].mmask &&
  736. X!                     m_at(cc.x,cc.y)->mimic))) {
  737. X!                 /* Note: this will say mimics in walls are
  738. X!                  *     closed doors, which we want.
  739. X!                  */
  740. X!                 switch(levl[cc.x][cc.y].doormask & ~D_TRAPPED) {
  741. X!                     case D_NODOOR: pline("(doorway)"); break;
  742. X!                     case D_BROKEN: pline("(broken door)"); break;
  743. X!                     case D_ISOPEN: pline("(open door)"); break;
  744. X!                     default:       pline("(closed door)"); break;
  745. X!                            /* locked or not */
  746. X!                 }
  747. X!                 }
  748. X! #ifdef SPELLS
  749. X!                 else
  750. X!                 if (q == SPBOOK_SYM && levl[cc.x][cc.y].omask)
  751. X!                     pline("(spellbook)");
  752. X! #endif
  753. X! #ifdef STRONGHOLD
  754. X!                 else
  755. X!                 if (((r == showsyms.dbvwall && q == defsyms.dbvwall) ||
  756. X!                  (r == showsyms.dbvwall && q == defsyms.dbvwall)) &&
  757. X!                 is_db_wall(cc.x,cc.y))
  758. X!                     pline("(raised drawbridge)");
  759. X! #endif
  760. X! #ifdef SINKS
  761. X!                 else
  762. X!                 if (r == showsyms.sink && q == defsyms.sink &&
  763. X!                 IS_SINK(levl[cc.x][cc.y].typ))
  764. X!                     pline("(sink)");
  765. X! #endif
  766. X              }
  767. X!             if (!Invisible 
  768. X! #ifdef POLYSELF
  769. X!                 && !u.uundetected
  770. X! #endif
  771. X!                     && u.ux==cc.x && u.uy==cc.y) {
  772. X                  pline("(%s named %s)",
  773. X  #ifdef POLYSELF
  774. X                  u.mtimedone ? mons[u.umonnum].mname :
  775. X  #endif
  776. X                  pl_character, plname);
  777. X!             } else if((q >= 'A' && q <= 'z') || index(nonlets,q)) {
  778. X                  for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
  779. X                  if(mtmp->mx == cc.x && mtmp->my == cc.y) {
  780. X                      pline("(%s%s)",
  781. X***************
  782. X*** 137,142 ****
  783. X--- 221,232 ----
  784. X                      return 0;
  785. X                  }
  786. X              }
  787. X+             if(bycurs) {
  788. X+                 buf = &bufr[6];
  789. X+                 more();
  790. X+                 rewind(fp);
  791. X+                 goto selobj;
  792. X+             }
  793. X              (void) fclose(fp);     /* kopper@psuvax1 */
  794. X              return 0;
  795. X              }
  796. X***************
  797. X*** 152,162 ****
  798. X--- 242,261 ----
  799. X      FILE *fp;
  800. X      char bufr[BUFSZ+6];
  801. X      register char *buf = &bufr[6], *ep, q, ctrl;
  802. X+ #ifdef OS2_CODEVIEW
  803. X+     char tmp[PATHLEN];
  804. X  
  805. X+     Strcpy(tmp,hackdir);
  806. X+     append_slash(tmp);
  807. X+     Strcat(tmp,CMDHELPFILE);
  808. X+     if(!(fp = fopen(tmp,"r"))) {
  809. X+ #else
  810. X      if(!(fp = fopen(CMDHELPFILE, "r"))) {
  811. X+ #endif
  812. X          pline("Cannot open data file!");
  813. X          return 0;
  814. X      }
  815. X+ 
  816. X      pline("What command? ");
  817. X  #ifdef UNIX
  818. X      introff();
  819. X***************
  820. X*** 456,462 ****
  821. X          for (tl = texthead; tl; tl = tl->next_line) {
  822. X              if (page_line (tl->line_text)) {
  823. X              set_pager(2);
  824. X!             goto cleanup;
  825. X              }
  826. X          }
  827. X          if(text) {
  828. X--- 555,565 ----
  829. X          for (tl = texthead; tl; tl = tl->next_line) {
  830. X              if (page_line (tl->line_text)) {
  831. X              set_pager(2);
  832. X!             while(tl = texthead) {
  833. X!                 texthead = tl->next_line;
  834. X!                 free((genericptr_t) tl);
  835. X!             }
  836. X!             return;
  837. X              }
  838. X          }
  839. X          if(text) {
  840. X***************
  841. X*** 467,473 ****
  842. X          }
  843. X      }
  844. X  
  845. X- cleanup:
  846. X      while(tl = texthead) {
  847. X          texthead = tl->next_line;
  848. X          free((genericptr_t) tl);
  849. X--- 570,575 ----
  850. X***************
  851. X*** 592,599 ****
  852. X--- 694,709 ----
  853. X  #else
  854. X        {
  855. X      FILE *f;            /* free after Robert Viduya */
  856. X+ #ifdef OS2_CODEVIEW
  857. X+     char tmp[PATHLEN];
  858. X  
  859. X+     Strcpy(tmp,hackdir);
  860. X+     append_slash(tmp);
  861. X+     Strcat(tmp,fnam);
  862. X+     if ((f = fopen (tmp, "r")) == (FILE *) 0) {
  863. X+ #else
  864. X      if ((f = fopen (fnam, "r")) == (FILE *) 0) {
  865. X+ #endif
  866. X          if(!silent) {
  867. X              home(); perror (fnam); flags.toplin = 1;
  868. X              pline ("Cannot open %s.", fnam);
  869. X*** src/Old/pickup.c    Wed Aug 16 12:35:55 1989
  870. X--- src/pickup.c    Tue Aug 15 20:34:53 1989
  871. X***************
  872. X*** 198,209 ****
  873. X              pline("Touching the dead cockatrice is a fatal mistake.");
  874. X              You("turn to stone.");
  875. X              You("die...");
  876. X!             killer = "cockatrice cadaver";
  877. X!             done("stoned");
  878. X          }
  879. X  
  880. X          if(obj->otyp == SCR_SCARE_MONSTER){
  881. X!           if(!obj->spe) obj->spe = 1;
  882. X            else {
  883. X              pline("The scroll turns to dust as you pick it up.");
  884. X              if(!(objects[SCR_SCARE_MONSTER].oc_name_known) &&
  885. X--- 198,210 ----
  886. X              pline("Touching the dead cockatrice is a fatal mistake.");
  887. X              You("turn to stone.");
  888. X              You("die...");
  889. X!             killer = "cockatrice corpse";
  890. X!             done(STONING);
  891. X          }
  892. X  
  893. X          if(obj->otyp == SCR_SCARE_MONSTER){
  894. X!           if(obj->blessed) obj->blessed = 0;
  895. X!           else if(!obj->spe && !obj->cursed) obj->spe = 1;
  896. X            else {
  897. X              pline("The scroll turns to dust as you pick it up.");
  898. X              if(!(objects[SCR_SCARE_MONSTER].oc_name_known) &&
  899. X*** src/Old/polyself.c    Wed Aug 16 12:36:18 1989
  900. X--- src/polyself.c    Tue Aug 15 22:58:32 1989
  901. X***************
  902. X*** 127,133 ****
  903. X          } else {
  904. X              Your("new form doesn't seem healthy enough to survive.");
  905. X              killer="unsuccessful polymorph";
  906. X!             done("died");
  907. X          }
  908. X          }
  909. X          set_uasmon();
  910. X--- 127,133 ----
  911. X          } else {
  912. X              Your("new form doesn't seem healthy enough to survive.");
  913. X              killer="unsuccessful polymorph";
  914. X!             done(DIED);
  915. X          }
  916. X          }
  917. X          set_uasmon();
  918. X***************
  919. X*** 160,166 ****
  920. X      if (Inhell && !Fire_resistance) {
  921. X          You("burn to a crisp.");
  922. X          killer = "unwise polymorph";
  923. X!         done("burned");
  924. X      }
  925. X  }
  926. X  
  927. X--- 160,166 ----
  928. X      if (Inhell && !Fire_resistance) {
  929. X          You("burn to a crisp.");
  930. X          killer = "unwise polymorph";
  931. X!         done(BURNING);
  932. X      }
  933. X  }
  934. X  
  935. X***************
  936. X*** 358,368 ****
  937. X      set_uasmon();
  938. X      You("return to %sn form!",(pl_character[0]=='E')?"elve":"huma");
  939. X  
  940. X!     if (u.uhp < 1)    done("died");
  941. X      if (!Fire_resistance && Inhell) {
  942. X          You("burn to a crisp.");
  943. X          killer = "dissipating polymorph spell";
  944. X!        done("burned");
  945. X      }
  946. X      if (!uarmg) selftouch("No longer petrify-resistant, you");
  947. X      if (sticky) uunstick();
  948. X--- 358,368 ----
  949. X      set_uasmon();
  950. X      You("return to %sn form!",(pl_character[0]=='E')?"elve":"huma");
  951. X  
  952. X!     if (u.uhp < 1)    done(DIED);
  953. X      if (!Fire_resistance && Inhell) {
  954. X          You("burn to a crisp.");
  955. X          killer = "dissipating polymorph spell";
  956. X!         done(BURNING);
  957. X      }
  958. X      if (!uarmg) selftouch("No longer petrify-resistant, you");
  959. X      if (sticky) uunstick();
  960. X***************
  961. X*** 507,513 ****
  962. X          looked = 1;
  963. X          if (Invis && !perceives(mtmp->data))
  964. X              pline("%s seems not to notice your gaze.", Monnam(mtmp));
  965. X!         else if (mtmp->minvis && !See_invisible)
  966. X              You("can't see where to gaze at %s.", Monnam(mtmp));
  967. X          else if (mtmp->mimic)
  968. X              continue;
  969. X--- 507,513 ----
  970. X          looked = 1;
  971. X          if (Invis && !perceives(mtmp->data))
  972. X              pline("%s seems not to notice your gaze.", Monnam(mtmp));
  973. X!         else if (mtmp->minvis && !See_invisible && !Telepat)
  974. X              You("can't see where to gaze at %s.", Monnam(mtmp));
  975. X          else if (mtmp->mimic)
  976. X              continue;
  977. X***************
  978. X*** 547,554 ****
  979. X  #ifdef MEDUSA
  980. X              if ((mtmp->data==&mons[PM_MEDUSA]) && !mtmp->mcan) {
  981. X              pline("Gazing at an awake medusa is not a very good idea...");
  982. X              You("turn to stone...");
  983. X!             done("stoned");
  984. X              }
  985. X  #endif
  986. X          }
  987. X--- 547,555 ----
  988. X  #ifdef MEDUSA
  989. X              if ((mtmp->data==&mons[PM_MEDUSA]) && !mtmp->mcan) {
  990. X              pline("Gazing at an awake medusa is not a very good idea...");
  991. X+             /* as if gazing at a sleeping anything is fruitful... */
  992. X              You("turn to stone...");
  993. X!             done(STONING);
  994. X              }
  995. X  #endif
  996. X          }
  997. X*** src/Old/potion.c    Thu Jul 27 16:56:52 1989
  998. X--- src/potion.c    Wed Aug 16 22:13:59 1989
  999. X***************
  1000. X*** 80,86
  1001. X  {
  1002. X      long old = Blinded;
  1003. X  
  1004. X!     if (!xtime && old) {
  1005. X          if (talk) {
  1006. X              if (Hallucination) pline("Oh, like, wow!  What a rush.");
  1007. X              else           You("can see again.");
  1008. X
  1009. X--- 80,86 -----
  1010. X  {
  1011. X      long old = Blinded;
  1012. X  
  1013. X!     if (!xtime && old && !Blindfolded) {
  1014. X          if (talk) {
  1015. X              if (Hallucination) pline("Oh, like, wow!  What a rush.");
  1016. X              else           You("can see again.");
  1017. X***************
  1018. X*** 476,482
  1019. X      case POT_GAIN_LEVEL:
  1020. X          if (otmp->cursed) {
  1021. X              unkn++;
  1022. X-             You("rise up, through the ceiling!");
  1023. X              /* they went up a level */
  1024. X              goto_level(dlevel-1, FALSE);
  1025. X              break;
  1026. X
  1027. X--- 476,481 -----
  1028. X      case POT_GAIN_LEVEL:
  1029. X          if (otmp->cursed) {
  1030. X              unkn++;
  1031. X              /* they went up a level */
  1032. X              if(dlevel > 1 && dlevel <= MAXLEVEL) { 
  1033. X                  You("rise up, through the ceiling!");
  1034. X***************
  1035. X*** 478,484
  1036. X              unkn++;
  1037. X              You("rise up, through the ceiling!");
  1038. X              /* they went up a level */
  1039. X!             goto_level(dlevel-1, FALSE);
  1040. X              break;
  1041. X          }
  1042. X          pluslvl();
  1043. X
  1044. X--- 477,486 -----
  1045. X          if (otmp->cursed) {
  1046. X              unkn++;
  1047. X              /* they went up a level */
  1048. X!             if(dlevel > 1 && dlevel <= MAXLEVEL) { 
  1049. X!                 You("rise up, through the ceiling!");
  1050. X!                 goto_level(dlevel-1, FALSE);
  1051. X!             } else You("have an uneasy feeling.");
  1052. X              break;
  1053. X          }
  1054. X          pluslvl();
  1055. X***************
  1056. X*** 979,985
  1057. X  
  1058. X      mnexto(mtmp);
  1059. X      if (!Blind)
  1060. X!         pline("In a cloud of smoke, a djinni emerges!");
  1061. X      else    You("smell acrid fumes.");
  1062. X      if (!Blind)
  1063. X          pline("%s speaks.", Monnam(mtmp));
  1064. X
  1065. X--- 981,987 -----
  1066. X  
  1067. X      mnexto(mtmp);
  1068. X      if (!Blind)
  1069. X!         pline("In a cloud of smoke, %s emerges!", defmonnam(mtmp));
  1070. X      else    You("smell acrid fumes.");
  1071. X      if (!Blind)
  1072. X          pline("%s speaks.", Monnam(mtmp));
  1073. X***************
  1074. X*** 997,1003
  1075. X          mtmp->mpeaceful = 1;
  1076. X          break;
  1077. X      case 3 : pline("\"It is about time!\"");
  1078. X!         pline("The djinni vanishes.");
  1079. X          mongone(mtmp);
  1080. X          break;
  1081. X      default: pline("\"You disturbed me, fool!\"");
  1082. X
  1083. X--- 999,1006 -----
  1084. X          mtmp->mpeaceful = 1;
  1085. X          break;
  1086. X      case 3 : pline("\"It is about time!\"");
  1087. X!         pline("The %s vanishes.",
  1088. X!             Hallucination ? rndmonnam() : "djinni");
  1089. X          mongone(mtmp);
  1090. X          break;
  1091. X      default: pline("\"You disturbed me, fool!\"");
  1092. X*** src/Old/pray.c    Sun Jul 30 23:58:10 1989
  1093. X--- src/pray.c    Wed Aug 16 22:14:01 1989
  1094. X***************
  1095. X*** 1,5
  1096. X  /*    SCCS Id: @(#)pray.c    3.0    89/01/10
  1097. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1098. X  /* NetHack may be freely redistributed.  See license for details. */
  1099. X  
  1100. X  #include "hack.h"
  1101. X
  1102. X--- 1,6 -----
  1103. X  /*    SCCS Id: @(#)pray.c    3.0    89/01/10
  1104. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1105. X+ /* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
  1106. X  /* NetHack may be freely redistributed.  See license for details. */
  1107. X  
  1108. X  #include "hack.h"
  1109. X***************
  1110. X*** 37,50
  1111. X  0,0,0,0
  1112. X  };
  1113. X  
  1114. X! #define TROUBLE_STONED 1
  1115. X! #define TROUBLE_STRANGLED 2
  1116. X! #define TROUBLE_SICK 3
  1117. X! #define TROUBLE_STARVING 4
  1118. X! #define TROUBLE_HIT 5
  1119. X! #define TROUBLE_STUCK_IN_WALL 6
  1120. X! #define TROUBLE_LEVITATED_FOREVER 7
  1121. X! #define TROUBLE_BLINDED_FOREVER 8
  1122. X  
  1123. X  #define TROUBLE_PUNISHED (-1)
  1124. X  #define TROUBLE_LYCANTHROPE (-2)
  1125. X
  1126. X--- 38,51 -----
  1127. X  0,0,0,0
  1128. X  };
  1129. X  
  1130. X! #define TROUBLE_STONED 8
  1131. X! #define TROUBLE_STRANGLED 7
  1132. X! #define TROUBLE_SICK 6
  1133. X! #define TROUBLE_STARVING 5
  1134. X! #define TROUBLE_HIT 4
  1135. X! #define TROUBLE_STUCK_IN_WALL 3
  1136. X! #define TROUBLE_CURSED_BLINDFOLD 2
  1137. X! #define TROUBLE_CURSED_LEVITATION 1
  1138. X  
  1139. X  #define TROUBLE_LYCANTHROPE (-1)
  1140. X  #define TROUBLE_PUNISHED (-2)
  1141. X***************
  1142. X*** 46,53
  1143. X  #define TROUBLE_LEVITATED_FOREVER 7
  1144. X  #define TROUBLE_BLINDED_FOREVER 8
  1145. X  
  1146. X! #define TROUBLE_PUNISHED (-1)
  1147. X! #define TROUBLE_LYCANTHROPE (-2)
  1148. X  #define TROUBLE_CURSED_ITEMS (-3)
  1149. X  #define TROUBLE_HUNGRY (-4)
  1150. X  #define TROUBLE_POISONED (-5)
  1151. X
  1152. X--- 47,54 -----
  1153. X  #define TROUBLE_CURSED_BLINDFOLD 2
  1154. X  #define TROUBLE_CURSED_LEVITATION 1
  1155. X  
  1156. X! #define TROUBLE_LYCANTHROPE (-1)
  1157. X! #define TROUBLE_PUNISHED (-2)
  1158. X  #define TROUBLE_CURSED_ITEMS (-3)
  1159. X  #define TROUBLE_BLIND (-4)
  1160. X  #define TROUBLE_HUNGRY (-5)
  1161. X***************
  1162. X*** 49,61
  1163. X  #define TROUBLE_PUNISHED (-1)
  1164. X  #define TROUBLE_LYCANTHROPE (-2)
  1165. X  #define TROUBLE_CURSED_ITEMS (-3)
  1166. X! #define TROUBLE_HUNGRY (-4)
  1167. X! #define TROUBLE_POISONED (-5)
  1168. X! #define TROUBLE_HALLUCINATION (-6)
  1169. X! #define TROUBLE_BLIND (-7)
  1170. X! #define TROUBLE_WOUNDED_LEGS (-8)
  1171. X! #define TROUBLE_STUNNED (-9)
  1172. X! #define TROUBLE_CONFUSED (-10)
  1173. X  
  1174. X  /* We could force rehumanize of polyselfed people, but we can't tell
  1175. X     unintentional shape changes from the other kind. Oh well. */
  1176. X
  1177. X--- 50,62 -----
  1178. X  #define TROUBLE_LYCANTHROPE (-1)
  1179. X  #define TROUBLE_PUNISHED (-2)
  1180. X  #define TROUBLE_CURSED_ITEMS (-3)
  1181. X! #define TROUBLE_BLIND (-4)
  1182. X! #define TROUBLE_HUNGRY (-5)
  1183. X! #define TROUBLE_POISONED (-6)
  1184. X! #define TROUBLE_WOUNDED_LEGS (-7)
  1185. X! #define TROUBLE_STUNNED (-8)
  1186. X! #define TROUBLE_CONFUSED (-9)
  1187. X! #define TROUBLE_HALLUCINATION (-10)
  1188. X  
  1189. X  /* We could force rehumanize of polyselfed people, but we can't tell
  1190. X     unintentional shape changes from the other kind. Oh well. */
  1191. X***************
  1192. X*** 108,116
  1193. X          ) return(TROUBLE_STUCK_IN_WALL);
  1194. X      if((uarmf && uarmf->otyp==LEVITATION_BOOTS && uarmf->cursed) ||
  1195. X          (uleft && uleft->otyp==RIN_LEVITATION && uleft->cursed) ||
  1196. X!         (uright && uright->otyp==RIN_LEVITATION && uleft->cursed))
  1197. X!         return(TROUBLE_LEVITATED_FOREVER);
  1198. X!     if(ublindf && ublindf->cursed) return(TROUBLE_BLINDED_FOREVER);
  1199. X  
  1200. X      if(Punished) return(TROUBLE_PUNISHED);
  1201. X  #ifdef POLYSELF
  1202. X
  1203. X--- 109,117 -----
  1204. X          ) return(TROUBLE_STUCK_IN_WALL);
  1205. X      if((uarmf && uarmf->otyp==LEVITATION_BOOTS && uarmf->cursed) ||
  1206. X          (uleft && uleft->otyp==RIN_LEVITATION && uleft->cursed) ||
  1207. X!         (uright && uright->otyp==RIN_LEVITATION && uright->cursed))
  1208. X!         return(TROUBLE_CURSED_LEVITATION);
  1209. X!     if(ublindf && ublindf->cursed) return(TROUBLE_CURSED_BLINDFOLD);
  1210. X  
  1211. X  #ifdef POLYSELF
  1212. X      if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
  1213. X***************
  1214. X*** 112,118
  1215. X          return(TROUBLE_LEVITATED_FOREVER);
  1216. X      if(ublindf && ublindf->cursed) return(TROUBLE_BLINDED_FOREVER);
  1217. X  
  1218. X-     if(Punished) return(TROUBLE_PUNISHED);
  1219. X  #ifdef POLYSELF
  1220. X      if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
  1221. X  #endif
  1222. X
  1223. X--- 113,118 -----
  1224. X          return(TROUBLE_CURSED_LEVITATION);
  1225. X      if(ublindf && ublindf->cursed) return(TROUBLE_CURSED_BLINDFOLD);
  1226. X  
  1227. X  #ifdef POLYSELF
  1228. X      if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
  1229. X  #endif
  1230. X***************
  1231. X*** 116,121
  1232. X  #ifdef POLYSELF
  1233. X      if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
  1234. X  #endif
  1235. X      for(otmp=invent; otmp; otmp=otmp->nobj)
  1236. X          if((otmp->otyp==LOADSTONE || otmp->otyp==LUCKSTONE) &&
  1237. X              otmp->cursed) 
  1238. X
  1239. X--- 116,122 -----
  1240. X  #ifdef POLYSELF
  1241. X      if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
  1242. X  #endif
  1243. X+     if(Punished) return(TROUBLE_PUNISHED);
  1244. X      for(otmp=invent; otmp; otmp=otmp->nobj)
  1245. X          if((otmp->otyp==LOADSTONE || otmp->otyp==LUCKSTONE) &&
  1246. X              otmp->cursed) 
  1247. X***************
  1248. X*** 137,142
  1249. X  
  1250. X         return(TROUBLE_CURSED_ITEMS);
  1251. X  
  1252. X      if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
  1253. X      for(i=0; i<A_MAX; i++)
  1254. X          if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
  1255. X
  1256. X--- 138,144 -----
  1257. X  
  1258. X         return(TROUBLE_CURSED_ITEMS);
  1259. X  
  1260. X+     if(Blinded > 1) return(TROUBLE_BLIND);
  1261. X      if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
  1262. X      for(i=0; i<A_MAX; i++)
  1263. X          if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
  1264. X***************
  1265. X*** 140,147
  1266. X      if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
  1267. X      for(i=0; i<A_MAX; i++)
  1268. X          if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
  1269. X-     if(Hallucination) return(TROUBLE_HALLUCINATION);
  1270. X-     if(Blinded > 1) return(TROUBLE_BLIND);
  1271. X      if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
  1272. X      if(HStun) return (TROUBLE_STUNNED);
  1273. X      if(HConfusion) return (TROUBLE_CONFUSED);
  1274. X
  1275. X--- 142,147 -----
  1276. X      if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
  1277. X      for(i=0; i<A_MAX; i++)
  1278. X          if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
  1279. X      if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
  1280. X      if(HStun) return (TROUBLE_STUNNED);
  1281. X      if(HConfusion) return (TROUBLE_CONFUSED);
  1282. X***************
  1283. X*** 145,150
  1284. X      if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
  1285. X      if(HStun) return (TROUBLE_STUNNED);
  1286. X      if(HConfusion) return (TROUBLE_CONFUSED);
  1287. X  
  1288. X      return(0);
  1289. X  }
  1290. X
  1291. X--- 145,151 -----
  1292. X      if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
  1293. X      if(HStun) return (TROUBLE_STUNNED);
  1294. X      if(HConfusion) return (TROUBLE_CONFUSED);
  1295. X+     if(Hallucination) return(TROUBLE_HALLUCINATION);
  1296. X  
  1297. X      return(0);
  1298. X  }
  1299. X***************
  1300. X*** 194,200
  1301. X              Your("surroundings change.");
  1302. X              tele();
  1303. X              break;
  1304. X!         case TROUBLE_LEVITATED_FOREVER:
  1305. X              if (uarmf && uarmf->otyp==LEVITATION_BOOTS
  1306. X                          && uarmf->cursed)
  1307. X              otmp = uarmf;
  1308. X
  1309. X--- 195,201 -----
  1310. X              Your("surroundings change.");
  1311. X              tele();
  1312. X              break;
  1313. X!         case TROUBLE_CURSED_LEVITATION:
  1314. X              if (uarmf && uarmf->otyp==LEVITATION_BOOTS
  1315. X                          && uarmf->cursed)
  1316. X              otmp = uarmf;
  1317. X***************
  1318. X*** 208,214
  1319. X              }
  1320. X              goto decurse;
  1321. X              break;
  1322. X!         case TROUBLE_BLINDED_FOREVER:
  1323. X              otmp = ublindf;
  1324. X              goto decurse;
  1325. X              break;
  1326. X
  1327. X--- 209,215 -----
  1328. X              }
  1329. X              goto decurse;
  1330. X              break;
  1331. X!         case TROUBLE_CURSED_BLINDFOLD:
  1332. X              otmp = ublindf;
  1333. X              goto decurse;
  1334. X              break;
  1335. X***************
  1336. X*** 404,410
  1337. X              }
  1338. X              You("fry to a crisp.");
  1339. X              killer = "holy wrath";
  1340. X!             done("died");
  1341. X              break;
  1342. X      }
  1343. X      u.ublesscnt = rnz(300);
  1344. X
  1345. X--- 405,411 -----
  1346. X              }
  1347. X              You("fry to a crisp.");
  1348. X              killer = "holy wrath";
  1349. X!             done(DIED);
  1350. X              break;
  1351. X      }
  1352. X      u.ublesscnt = rnz(300);
  1353. X***************
  1354. X*** 545,552
  1355. X              }
  1356. X              break;
  1357. X          }
  1358. X!         case 5:    pline("A voice booms out:  \"Thou hast pleased me with thy progress,\"");
  1359. X!             pline("\"and thus I grant thee the gift of ");
  1360. X              if (!(HTelepat & INTRINSIC))  {
  1361. X                  HTelepat |= INTRINSIC;
  1362. X                  addtopl("Telepathy!\"");
  1363. X
  1364. X--- 546,555 -----
  1365. X              }
  1366. X              break;
  1367. X          }
  1368. X!         case 5:
  1369. X!         {
  1370. X!             char *msg="\"and thus I grant thee the gift of %s!\"";
  1371. X!             pline("A voice booms out:  \"Thou hast pleased me with thy progress,\"");
  1372. X              if (!(HTelepat & INTRINSIC))  {
  1373. X                  HTelepat |= INTRINSIC;
  1374. X                  pline(msg, "Telepathy");
  1375. X***************
  1376. X*** 549,555
  1377. X              pline("\"and thus I grant thee the gift of ");
  1378. X              if (!(HTelepat & INTRINSIC))  {
  1379. X                  HTelepat |= INTRINSIC;
  1380. X!                 addtopl("Telepathy!\"");
  1381. X              } else if (!(Fast & INTRINSIC))  {
  1382. X                  Fast |= INTRINSIC;
  1383. X                  addtopl("Speed!\"");
  1384. X
  1385. X--- 552,558 -----
  1386. X              pline("A voice booms out:  \"Thou hast pleased me with thy progress,\"");
  1387. X              if (!(HTelepat & INTRINSIC))  {
  1388. X                  HTelepat |= INTRINSIC;
  1389. X!                 pline(msg, "Telepathy");
  1390. X              } else if (!(Fast & INTRINSIC))  {
  1391. X                  Fast |= INTRINSIC;
  1392. X                  pline(msg, "Speed");
  1393. X***************
  1394. X*** 552,558
  1395. X                  addtopl("Telepathy!\"");
  1396. X              } else if (!(Fast & INTRINSIC))  {
  1397. X                  Fast |= INTRINSIC;
  1398. X!                 addtopl("Speed!\"");
  1399. X              } else if (!(Stealth & INTRINSIC))  {
  1400. X                  Stealth |= INTRINSIC;
  1401. X                  addtopl("Stealth!\"");
  1402. X
  1403. X--- 555,561 -----
  1404. X                  pline(msg, "Telepathy");
  1405. X              } else if (!(Fast & INTRINSIC))  {
  1406. X                  Fast |= INTRINSIC;
  1407. X!                 pline(msg, "Speed");
  1408. X              } else if (!(Stealth & INTRINSIC))  {
  1409. X                  Stealth |= INTRINSIC;
  1410. X                  pline(msg, "Stealth");
  1411. X***************
  1412. X*** 555,561
  1413. X                  addtopl("Speed!\"");
  1414. X              } else if (!(Stealth & INTRINSIC))  {
  1415. X                  Stealth |= INTRINSIC;
  1416. X!                 addtopl("Stealth!\"");
  1417. X              } else {
  1418. X                  if (!(Protection & INTRINSIC))  {
  1419. X                  Protection |= INTRINSIC;
  1420. X
  1421. X--- 558,564 -----
  1422. X                  pline(msg, "Speed");
  1423. X              } else if (!(Stealth & INTRINSIC))  {
  1424. X                  Stealth |= INTRINSIC;
  1425. X!                 pline(msg, "Stealth");
  1426. X              } else {
  1427. X                  if (!(Protection & INTRINSIC))  {
  1428. X                  Protection |= INTRINSIC;
  1429. X***************
  1430. X*** 561,567
  1431. X                  Protection |= INTRINSIC;
  1432. X                  if (!u.ublessed)  u.ublessed = rnd(3) + 1;
  1433. X                  } else u.ublessed++;
  1434. X!                 addtopl("our protection!\"");
  1435. X              }
  1436. X              pline ("\"Use it wisely in my name!\"");
  1437. X              break;
  1438. X
  1439. X--- 564,570 -----
  1440. X                  Protection |= INTRINSIC;
  1441. X                  if (!u.ublessed)  u.ublessed = rnd(3) + 1;
  1442. X                  } else u.ublessed++;
  1443. X!                 pline(msg, "my protection");
  1444. X              }
  1445. X              pline ("\"Use it wisely in my name!\"");
  1446. X              break;
  1447. X***************
  1448. X*** 565,571
  1449. X              }
  1450. X              pline ("\"Use it wisely in my name!\"");
  1451. X              break;
  1452. X! 
  1453. X          case 7:
  1454. X  #ifdef ELBERETH
  1455. X              if (u.ualign > 3 && !u.uhand_of_elbereth) {
  1456. X
  1457. X--- 568,574 -----
  1458. X              }
  1459. X              pline ("\"Use it wisely in my name!\"");
  1460. X              break;
  1461. X!         }
  1462. X          case 7:
  1463. X  #ifdef ELBERETH
  1464. X              if (u.ualign > 3 && !u.uhand_of_elbereth) {
  1465. X***************
  1466. X*** 587,592
  1467. X  #endif
  1468. X                  } else {
  1469. X                  register struct obj *obj;
  1470. X                  pline("A voice booms out:  \"Thou art chosen to steal souls for Arioch!\"");
  1471. X                  /* This does the same damage as Excalibur.
  1472. X                   * Disadvantages: doesn't do bonuses to undead;
  1473. X
  1474. X--- 590,596 -----
  1475. X  #endif
  1476. X                  } else {
  1477. X                  register struct obj *obj;
  1478. X+ #ifdef NAMED_ITEMS
  1479. X                  pline("A voice booms out:  \"Thou art chosen to steal souls for Arioch!\"");
  1480. X                  /* This does the same damage as Excalibur.
  1481. X                   * Disadvantages: doesn't do bonuses to undead;
  1482. X***************
  1483. X*** 617,622
  1484. X               */
  1485. X                  obj->spe = 1;
  1486. X                  dropy(obj);
  1487. X                  }
  1488. X                  break;
  1489. X              }
  1490. X
  1491. X--- 621,629 -----
  1492. X               */
  1493. X                  obj->spe = 1;
  1494. X                  dropy(obj);
  1495. X+ #else
  1496. X+                 pline("Thou shalt become the servant of Arioch!");
  1497. X+ #endif
  1498. X                  }
  1499. X                  break;
  1500. X              }
  1501. X***************
  1502. X*** 716,721
  1503. X  
  1504. X      if (otmp->otyp == CORPSE) {
  1505. X          register struct permonst *mtmp = &mons[otmp->corpsenm];
  1506. X  
  1507. X          if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
  1508. X          value = mtmp->mlevel + 1; /* only fresh kills */
  1509. X
  1510. X--- 723,729 -----
  1511. X  
  1512. X      if (otmp->otyp == CORPSE) {
  1513. X          register struct permonst *mtmp = &mons[otmp->corpsenm];
  1514. X+         extern int monstr[];
  1515. X  
  1516. X          if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
  1517. X          value = monstr[otmp->corpsenm] + 1;
  1518. X***************
  1519. X*** 718,724
  1520. X          register struct permonst *mtmp = &mons[otmp->corpsenm];
  1521. X  
  1522. X          if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
  1523. X!         value = mtmp->mlevel + 1; /* only fresh kills */
  1524. X  
  1525. X          if (is_human(mtmp)) { /* Human sacrifice! */
  1526. X  #ifdef POLYSELF
  1527. X
  1528. X--- 726,732 -----
  1529. X          extern int monstr[];
  1530. X  
  1531. X          if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
  1532. X!         value = monstr[otmp->corpsenm] + 1;
  1533. X  
  1534. X          if (is_human(mtmp)) { /* Human sacrifice! */
  1535. X  #ifdef POLYSELF
  1536. X***************
  1537. X*** 822,828
  1538. X          }
  1539. X          else {
  1540. X              /* The final Test.    Did you win? */
  1541. X!             if(uamul && uamul->otyp == otmp->otyp) Amulet_off();
  1542. X              useup(otmp);    /* well, it's gone now */
  1543. X              You("offer the Amulet to %s...", a_gname());
  1544. X              if (u.ualigntyp !=
  1545. X
  1546. X--- 830,836 -----
  1547. X          }
  1548. X          else {
  1549. X              /* The final Test.    Did you win? */
  1550. X!             if(uamul == otmp) Amulet_off();
  1551. X              useup(otmp);    /* well, it's gone now */
  1552. X              You("offer the Amulet to %s...", a_gname());
  1553. X              if (u.ualigntyp !=
  1554. X***************
  1555. X*** 835,841
  1556. X              pline("Fortunately, %s permits you to live...", a_gname());
  1557. X              pline("A cloud of %s smoke surrounds you...",
  1558. X                  Hallucination ? hcolor() : "orange");
  1559. X!             done("escaped");
  1560. X              } else {        /* super big win */
  1561. X          pline("An invisible choir sings, and you are bathed in radiance...");
  1562. X          pline("\"Congratulations, mortal!  In return for thy service,");
  1563. X
  1564. X--- 843,849 -----
  1565. X              pline("Fortunately, %s permits you to live...", a_gname());
  1566. X              pline("A cloud of %s smoke surrounds you...",
  1567. X                  Hallucination ? hcolor() : "orange");
  1568. X!             done(ESCAPED);
  1569. X              } else {        /* super big win */
  1570. X          pline("An invisible choir sings, and you are bathed in radiance...");
  1571. X          pline("\"Congratulations, mortal!  In return for thy service,");
  1572. X***************
  1573. X*** 839,845
  1574. X              } else {        /* super big win */
  1575. X          pline("An invisible choir sings, and you are bathed in radiance...");
  1576. X          pline("\"Congratulations, mortal!  In return for thy service,");
  1577. X!             pline("\"I grant thee the gift of Immortality!\"");
  1578. X              You("ascend to the status of Demigod...");
  1579. X              done("ascended");
  1580. X              }
  1581. X
  1582. X--- 847,853 -----
  1583. X              } else {        /* super big win */
  1584. X          pline("An invisible choir sings, and you are bathed in radiance...");
  1585. X          pline("\"Congratulations, mortal!  In return for thy service,");
  1586. X!             pline("I grant thee the gift of Immortality!\"");
  1587. X              You("ascend to the status of Demigod...");
  1588. X              done(ASCENDED);
  1589. X              }
  1590. X***************
  1591. X*** 841,847
  1592. X          pline("\"Congratulations, mortal!  In return for thy service,");
  1593. X              pline("\"I grant thee the gift of Immortality!\"");
  1594. X              You("ascend to the status of Demigod...");
  1595. X!             done("ascended");
  1596. X              }
  1597. X          }
  1598. X      }
  1599. X
  1600. X--- 849,855 -----
  1601. X          pline("\"Congratulations, mortal!  In return for thy service,");
  1602. X              pline("I grant thee the gift of Immortality!\"");
  1603. X              You("ascend to the status of Demigod...");
  1604. X!             done(ASCENDED);
  1605. X              }
  1606. X          }
  1607. X      }
  1608. X*** src/Old/pri.c    Wed Aug 16 12:38:14 1989
  1609. X--- src/pri.c    Fri Aug 11 17:05:31 1989
  1610. X***************
  1611. X*** 150,156 ****
  1612. X  #ifdef POLYSELF
  1613. X              && !u.uundetected
  1614. X  #endif
  1615. X!                     ) atl(u.ux,u.uy,(char)u.usym);
  1616. X  }
  1617. X  
  1618. X  void
  1619. X--- 150,159 ----
  1620. X  #ifdef POLYSELF
  1621. X              && !u.uundetected
  1622. X  #endif
  1623. X!                     ) {
  1624. X!         levl[u.ux][u.uy].seen = 0; /* force atl */
  1625. X!         atl(u.ux,u.uy,(char)u.usym);
  1626. X!     }
  1627. X  }
  1628. X  
  1629. X  void
  1630. X***************
  1631. X*** 219,225 ****
  1632. X              && !u.uundetected
  1633. X  #endif
  1634. X                      ) {
  1635. X!         levl[(u.udisx = u.ux)][(u.udisy = u.uy)].scrsym = u.usym;
  1636. X          levl[u.udisx][u.udisy].seen = 1;
  1637. X          u.udispl = 1;
  1638. X      } else    u.udispl = 0;
  1639. X--- 222,230 ----
  1640. X              && !u.uundetected
  1641. X  #endif
  1642. X                      ) {
  1643. X!         u.udisx = u.ux;
  1644. X!         u.udisy = u.uy;
  1645. X!         levl[u.udisx][u.udisy].scrsym = u.usym;
  1646. X          levl[u.udisx][u.udisy].seen = 1;
  1647. X          u.udispl = 1;
  1648. X      } else    u.udispl = 0;
  1649. X***************
  1650. X*** 229,235 ****
  1651. X          mtmp->mdispl = 0;
  1652. X      seemons();    /* force new positions to be shown */
  1653. X  
  1654. X! #if defined(DGK) && !defined(MSDOSCOLOR)
  1655. X      /* Otherwise, line buffer the output to do the redraw in
  1656. X       * about 2/3 of the time.
  1657. X       */
  1658. X--- 234,240 ----
  1659. X          mtmp->mdispl = 0;
  1660. X      seemons();    /* force new positions to be shown */
  1661. X  
  1662. X! #if defined(DGK) && !defined(TEXTCOLOR)
  1663. X      /* Otherwise, line buffer the output to do the redraw in
  1664. X       * about 2/3 of the time.
  1665. X       */
  1666. X***************
  1667. X*** 261,267 ****
  1668. X                  curx = end + 1;
  1669. X              }
  1670. X          }
  1671. X! #else /* DGK && !MSDOSCOLOR */
  1672. X      for(y = 0; y < ROWNO; y++)
  1673. X          for(x = 0; x < COLNO; x++)
  1674. X              if((room = &levl[x][y])->new) {
  1675. X--- 266,272 ----
  1676. X                  curx = end + 1;
  1677. X              }
  1678. X          }
  1679. X! #else /* DGK && !TEXTCOLOR */
  1680. X      for(y = 0; y < ROWNO; y++)
  1681. X          for(x = 0; x < COLNO; x++)
  1682. X              if((room = &levl[x][y])->new) {
  1683. X***************
  1684. X*** 269,275 ****
  1685. X                  at(x,y,room->scrsym,AT_APP);
  1686. X              } else if(room->seen)
  1687. X                  at(x,y,room->scrsym,AT_APP);
  1688. X! #endif /* DGK && !MSDOSCOLOR */
  1689. X  #ifndef g_putch
  1690. X      if (GFlag) {
  1691. X          graph_off();
  1692. X--- 274,280 ----
  1693. X                  at(x,y,room->scrsym,AT_APP);
  1694. X              } else if(room->seen)
  1695. X                  at(x,y,room->scrsym,AT_APP);
  1696. X! #endif /* DGK && !TEXTCOLOR */
  1697. X  #ifndef g_putch
  1698. X      if (GFlag) {
  1699. X          graph_off();
  1700. X***************
  1701. X*** 1100,1115 ****
  1702. X      }
  1703. X  
  1704. X      if (!typ) {
  1705. X-         char *isobjct = index(obj_symbols, (char) let);
  1706. X- 
  1707. X          if (let == GOLD_SYM)
  1708. X              typ = AT_GLD;
  1709. X! #ifdef MSDOSCOLOR
  1710. X!         else if (let == POOL_SYM)
  1711. X!             if (HI_BLUE == HI) typ = AT_MAP;
  1712. X!             else typ = AT_BLUE;
  1713. X! #endif
  1714. X!         else if (isobjct != NULL || let == S_MIMIC_DEF)
  1715. X              /* is an object */
  1716. X              typ = AT_OBJ;
  1717. X          else if (ismnst((char) let))
  1718. X--- 1105,1114 ----
  1719. X      }
  1720. X  
  1721. X      if (!typ) {
  1722. X          if (let == GOLD_SYM)
  1723. X              typ = AT_GLD;
  1724. X!         else if (index(obj_symbols, (char) let) != NULL
  1725. X!              || let == S_MIMIC_DEF)
  1726. X              /* is an object */
  1727. X              typ = AT_OBJ;
  1728. X          else if (ismnst((char) let))
  1729. X***************
  1730. X*** 1116,1152 ****
  1731. X              /* is a monster */
  1732. X              typ = AT_MON;
  1733. X      }
  1734. X! #ifndef MSDOSCOLOR
  1735. X!     if (typ == AT_MON) revbeg();
  1736. X! #else
  1737. X      switch (typ) {
  1738. X          case AT_MON:
  1739. X!         xputs(let != S_MIMIC_DEF ? HI_MON : HI_OBJ);
  1740. X          break;
  1741. X          case AT_OBJ:
  1742. X!         xputs(let == GOLD_SYM ? HI_GOLD : HI_OBJ);
  1743. X          break;
  1744. X          case AT_MAP:
  1745. X!         if (!(typ = (let == POOL_SYM)))
  1746. X!             break;
  1747. X!         case AT_BLUE:
  1748. X!         xputs(HI_BLUE);
  1749. X          break;
  1750. X          case AT_ZAP:
  1751. X!         xputs(HI_ZAP);
  1752. X          break;
  1753. X-         case AT_RED:
  1754. X-         xputs(HI_RED);
  1755. X-         break;
  1756. X-         case AT_WHITE:
  1757. X-         xputs(HI_WHITE);
  1758. X-         break;
  1759. X      }
  1760. X  #endif
  1761. X  
  1762. X      g_putch(let);
  1763. X  
  1764. X! #ifdef MSDOSCOLOR
  1765. X      if (typ) xputs(HE);
  1766. X  #else
  1767. X      if (typ == AT_MON) m_end();
  1768. X--- 1115,1174 ----
  1769. X              /* is a monster */
  1770. X              typ = AT_MON;
  1771. X      }
  1772. X! #ifdef TEXTCOLOR
  1773. X      switch (typ) {
  1774. X          case AT_MON:
  1775. X!         switch (let) {
  1776. X!             case S_MIMIC_DEF:
  1777. X!             typ = HI_OBJ;
  1778. X!             break;
  1779. X!             case S_YLIGHT:    /* make 'em "glow" */
  1780. X!             typ = YELLOW;
  1781. X!             break;
  1782. X!             default:
  1783. X!             typ = HI_MON;
  1784. X!         }
  1785. X          break;
  1786. X          case AT_OBJ:
  1787. X!         switch (let) {
  1788. X!             case GOLD_SYM:
  1789. X!             typ = HI_GOLD;
  1790. X!             break;
  1791. X!             case WEAPON_SYM:
  1792. X!             case ARMOR_SYM:
  1793. X!             case RING_SYM:
  1794. X!             case AMULET_SYM:
  1795. X!             typ = HI_METAL;
  1796. X!             break;
  1797. X!             case FOOD_SYM:
  1798. X!             case POTION_SYM:
  1799. X!             typ = HI_ORGANIC;
  1800. X!             break;
  1801. X!             default:
  1802. X!             typ = HI_OBJ;
  1803. X!         }
  1804. X          break;
  1805. X          case AT_MAP:
  1806. X! #ifdef FOUNTAINS
  1807. X!         typ = ((let == POOL_SYM || let == FOUNTAIN_SYM)
  1808. X! #else
  1809. X!         typ = (let == POOL_SYM
  1810. X! #endif
  1811. X!             && HI_COLOR[BLUE] != HI ? BLUE : 0);
  1812. X          break;
  1813. X          case AT_ZAP:
  1814. X!         typ = HI_ZAP;
  1815. X          break;
  1816. X      }
  1817. X+     if (typ)
  1818. X+         xputs(HI_COLOR[typ]);
  1819. X+ #else
  1820. X+     if (typ == AT_MON) revbeg();
  1821. X  #endif
  1822. X  
  1823. X      g_putch(let);
  1824. X  
  1825. X! #ifdef TEXTCOLOR
  1826. X      if (typ) xputs(HE);
  1827. X  #else
  1828. X      if (typ == AT_MON) m_end();
  1829. END_OF_FILE
  1830. if test 57076 -ne `wc -c <'patch02f'`; then
  1831.     echo shar: \"'patch02f'\" unpacked with wrong size!
  1832. fi
  1833. # end of 'patch02f'
  1834. fi
  1835. echo shar: End of archive 6 \(of 7\).
  1836. cp /dev/null ark6isdone
  1837. MISSING=""
  1838. for I in 1 2 3 4 5 6 7 ; do
  1839.     if test ! -f ark${I}isdone ; then
  1840.     MISSING="${MISSING} ${I}"
  1841.     fi
  1842. done
  1843. if test "${MISSING}" = "" ; then
  1844.     echo You have unpacked all 7 archives.
  1845.     rm -f ark[1-9]isdone
  1846. else
  1847.     echo You still need to unpack the following archives:
  1848.     echo "        " ${MISSING}
  1849. fi
  1850. ##  End of shell archive.
  1851. exit 0
  1852.